// Student.cs
namespace CSharpPro._1023;

public class Student
{
    // 私有字段
    private string _name;
    private int _age;
    private string _studentId;

    // 公共属性
    public string Name 
    { 
        get => _name; 
        set => _name = FormatName(value); 
    }

    public int Age 
    { 
        get => _age; 
        set 
        { 
            if (IsValidAge(value))
                _age = value;
            else
                throw new ArgumentException("年龄必须在6-25岁之间");
        } 
    }

    public string StudentId 
    { 
        get => _studentId; 
        set => _studentId = ValidateStudentId(value) ? value : throw new ArgumentException("学号格式错误"); 
    }

    // 私有方法：验证年龄有效性
    private bool IsValidAge(int age)
    {
        return age >= 6 && age <= 25;
    }

    // 私有方法：格式化姓名（首字母大写）
    private string FormatName(string name)
    {
        if (string.IsNullOrWhiteSpace(name))
            return "未知姓名";
        
        return char.ToUpper(name[0]) + name.Substring(1).ToLower();
    }

    // 私有方法：验证学号格式（简单示例：必须是字母开头+数字）
    private bool ValidateStudentId(string id)
    {
        if (string.IsNullOrWhiteSpace(id) || id.Length < 5)
            return false;
        
        return char.IsLetter(id[0]) && id.Substring(1).All(char.IsDigit);
    }

    // 显示学生信息
    public void ShowInfo()
    {
        Console.WriteLine($"学号：{StudentId}");
        Console.WriteLine($"姓名：{Name}");
        Console.WriteLine($"年龄：{Age}");
    }
}